Completed
Push — master ( 3b8b0c...578b04 )
by Michael
02:39
created

HeadingMenuItemDispatcher.js ➔ getMenuItem   A

Complexity

Conditions 2
Paths 1

Size

Total Lines 10
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 7
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 10
rs 10
1
import { setBlockType } from 'prosemirror-commands';
2
import AbstractMenuItemDispatcher from './AbstractMenuItemDispatcher';
3
import MenuItem from '../MenuItem';
4
import { svgIcon } from '../MDI';
5
6
export default class HeadingMenuItemDispatcher extends AbstractMenuItemDispatcher {
7
    /**
8
     * Create an MenuItemDispatcher to set the blocktype to a heading at the given level
9
     *
10
     * @param {int} level the level of the heading, from 1 to 6
11
     */
12
    constructor(level) {
13
        super();
14
        this.level = level;
15
    }
16
17
    isAvailable(schema) { // eslint-disable-line class-methods-use-this
18
        return !!schema.nodes.heading;
19
    }
20
21
    getMenuItem(schema) {
22
        if (!this.isAvailable(schema)) {
23
            throw new Error('Headings not available in this schema!');
24
        }
25
        return new MenuItem({
26
            command: setBlockType(schema.nodes.heading, { level: this.level }),
27
            icon: svgIcon(`format-header-${this.level}`),
28
            label: `Heading ${this.level}`,
29
        });
30
    }
31
}
32